package com.antifake;

import java.util.Set;

/**
 * 生成防伪码的基类，定义基本的功能和使用方法
 * 
 * @author zzm
 * @param <T> 生成后的防伪码的类型，比如String代表一串符合某个pattern的字符
 */
public abstract class CodeGenerator {
	
	public static final String PLACE_HOLDER = "${antiFakeCode}";
	public static final String DEFAULT_PATTERN = PLACE_HOLDER;
	
	private String pattern = DEFAULT_PATTERN; //生成代码后的模式
	
	private int count = 1; //生成个数
	private int digit = 11;
	
	/**
	 * 默认防伪码生成方法，将根据Generator被设定的值生成
	 * @return 一个包含防伪码的集合
	 */
	public abstract Set generate();

	
	/** getters and setters **/
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getPattern() {
		return pattern;
	}
	public void setPattern(String pattern) {
		this.pattern = pattern;
	}
	public int getDigit() {
		return digit;
	}
	public void setDigit(int digit) {
		this.digit = digit;
	}
}
